//
//  VKApi.h
//  VKChat
//
//  Created by Максим Бризинский on 14.01.11.
//  Copyright 2011 БГУИР. All rights reserved.
//

#import <Cocoa/Cocoa.h>
#import "VKAuth.h"
#import <WebKit/WebKit.h>
#import "User.h"



/* Структура содержащая параметры для соединения с LongPollServer */
typedef struct _VKLongPollServerSession {
	NSString* key;
	NSString* server;
	long long ts;
	BOOL isPollInit;
} VKLongPollServerSession;

/* Протокол реализующий асинхронные методы получения сообщения */
@protocol VKApiMessageDelegate
@required
-(void)didReceiveMessage:(NSString*)message fromUid:(long)uid;
@end

/* Протокол реализующий асинхронные методы сообщени о присутствии */
@protocol VKApiRosterDelegate
@required
-(void)didFriendOnlineWithUid:(long) uid;
-(void)didFriendOfflineWithUid:(long) uid;
@end

/* Класс предоставляющий интерфейс взаимодействия с в VK API, будет реализован по шаблону singletone
 для взаимодействия с сервером нам необходима полученная ранее сессия при авторизации */

@interface VKApi : NSObject {
	VKSessionInfo _session;
	VKLongPollServerSession _pollSession;	
	id<VKApiMessageDelegate> _receiverMessagesDelegate;
	id<VKApiRosterDelegate> _rosterDelegate;
}
@property (nonatomic) VKSessionInfo session;
@property (nonatomic, retain) id<VKApiMessageDelegate> receiverMessagesDelegate;
@property (nonatomic, retain) id<VKApiRosterDelegate> rosterDelegate;

+(VKApi*)getInstance;

-(NSArray*)getAllFriends;
-(NSArray*)getFriendsOnline;
-(NSArray*)getProfilesForUids:(NSArray*)uids;
-(int)sendMessage:(NSString*)message toUid:(long)uid;
-(int)setStatus:(NSString*) status;
-(NSString*)getStatusForUid: (long) uid; 

-(void)getPollServerSession;
-(void)startAsyncPollServer;
-(void)startPollServer;
-(void)translateUpdates:(NSArray *)updates;

@end

static VKApi* _instance = nil;
static NSString* apiServer = @"http://api.vkontakte.ru/api.php";



